package d12_homework.d2_secondquestion;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//4、使用Lombok技术,记性声明get与set等方法
@Data
@NoArgsConstructor
@AllArgsConstructor
//1、定义一个惩罚类
//由于老师每发现一个,同学就会罚他,抄的内容不一样
public class Punishment {
    //2、声明一个变量的,用于记录抄写的次数
    private int punishmentFrequency;

    //3、声明一个变量,用于记录要抄写的内容
    private String copyWord;


    //完成被惩罚的实现
    public void completeTheTask() {
        int count = 0;


        //5、获取当前抄写的线程
        String name = Thread.currentThread().getName();

        //10、要反复的进行抄写---->死循环

        //8、进行上锁,保证线程的安全


        while (true) {
            synchronized (this) {
                //11、添加退出条件
                if (punishmentFrequency > 0) {

                    //6、每抄一次,惩罚的次数就进行减1
                    punishmentFrequency--;


                    //7、输出谁进行的抄写
                    System.out.println(name + "-抄写了一遍" + copyWord + "两个人还要抄写" + punishmentFrequency);
                }else {
                    break;
                }
                ++count;
            }
            // 添加短暂延迟，让线程切换更明显
            /*try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }*/
        }

        System.out.println(name + "加了"+count);

    }

}
